﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using AcadPos.Entity;
using TrustX.Dados;
using System.Data.SqlClient;

namespace AcadPos.Data
{
    public class DBPolo
    {
        #region Inserir
        public bool inserir(Polo polo, string usuario)
        {
            string SQL = @"INSERT INTO TB_POLO
                                  (
                                    ID_ESTADO,
                                    DESCRICAO,
                                    CEP,
                                    ENDERECO,
                                    NUMERO,
                                    COMPLEMENTO,
                                    BAIRRO,
                                    CIDADE,
                                    UF_ENDERECO,
                                    EMAIL,
                                    DDD_TELEFONE,
                                    TELEFONE,
                                    DDD_CELULAR,
                                    CELULAR,
                                    DATA_CADASTRO,
                                    SITUACAO,
                                    ID_ADMINISTRADOR
                                  )
                                VALUES
                                  (
                                    @ID_ESTADO,
                                    UPPER(@DESCRICAO),
                                    @CEP,
                                    @ENDERECO,
                                    @NUMERO,
                                    @COMPLEMENTO,
                                    @BAIRRO,
                                    @CIDADE,
                                    @UF_ENDERECO,
                                    @EMAIL,
                                    @DDD_TELEFONE,
                                    @TELEFONE,
                                    @DDD_CELULAR,
                                    @CELULAR,
                                    GETDATE(),
                                    @SITUACAO,
                                    @ID_ADMINISTRADOR
                                  )";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
            db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
            db.AddParam("@CEP", SqlDbType.Int, polo.Cep);
            db.AddParam("@ENDERECO", SqlDbType.VarChar, polo.Endereco);
            db.AddParam("@NUMERO", SqlDbType.Int, polo.NumeroEndereco);
            db.AddParam("@COMPLEMENTO", SqlDbType.VarChar, polo.Complemento);
            db.AddParam("@BAIRRO", SqlDbType.VarChar, polo.Bairro);
            db.AddParam("@CIDADE", SqlDbType.VarChar, polo.Cidade);
            db.AddParam("@UF_ENDERECO", SqlDbType.VarChar, polo.Estado);
            db.AddParam("@EMAIL", SqlDbType.VarChar, polo.Email);
            db.AddParam("@DDD_TELEFONE", SqlDbType.Int, polo.Ddd);
            db.AddParam("@TELEFONE", SqlDbType.VarChar, polo.Fone1);
            if (polo.Ddd2 > 0)
                db.AddParam("@DDD_CELULAR", SqlDbType.Int, polo.Ddd2);
            else
                db.AddParam("@DDD_CELULAR", SqlDbType.Int, DBNull.Value);
            if (polo.Fone2 != null)
                db.AddParam("@CELULAR", SqlDbType.VarChar, polo.Fone2);
            else
                db.AddParam("@CELULAR", SqlDbType.Int, DBNull.Value);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);

            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'INSERT',
                        'TB_POLO',
                        ((SELECT CAST(MAX(ID_POLO) AS VARCHAR) FROM TB_POLO)
                        + ' | ' + CAST(@ID_ESTADO AS VARCHAR)
                        + ' | ' + UPPER(@DESCRICAO)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + CAST(@ID_ADMINISTRADOR AS VARCHAR)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";
                db = new DataAccess(SQL);

                db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
                db.AddParam("@EMAIL", SqlDbType.VarChar, polo.Email);
                db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Alterar
        public bool alterar(Polo polo, string usuario)
        {
            string SQL = @"UPDATE TB_POLO
                            SET    ID_ESTADO                 = @ID_ESTADO,
                                   SITUACAO                  = @SITUACAO,
                                   DESCRICAO                 = UPPER(@DESCRICAO),
                                   CEP                       = @CEP,
                                   ENDERECO                  = @ENDERECO,
                                   NUMERO                    = @NUMERO,
                                   COMPLEMENTO               = @COMPLEMENTO,
                                   BAIRRO                    = @BAIRRO,
                                   CIDADE                    = @CIDADE,
                                   UF_ENDERECO               = @UF_ENDERECO,
                                   EMAIL                     = @EMAIL,
                                   DDD_TELEFONE              = @DDD_TELEFONE,
                                   TELEFONE                  = @TELEFONE,
                                   DDD_CELULAR               = @DDD_CELULAR,
                                   CELULAR                   = @CELULAR,
                                   ID_ADMINISTRADOR     = @ID_ADMINISTRADOR
                            WHERE  ID_POLO                   = @ID_POLO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
            db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
            db.AddParam("@CEP", SqlDbType.Int, polo.Cep);
            db.AddParam("@ENDERECO", SqlDbType.VarChar, polo.Endereco);
            db.AddParam("@NUMERO", SqlDbType.Int, polo.NumeroEndereco);
            db.AddParam("@COMPLEMENTO", SqlDbType.VarChar, polo.Complemento);
            db.AddParam("@BAIRRO", SqlDbType.VarChar, polo.Bairro);
            db.AddParam("@CIDADE", SqlDbType.VarChar, polo.Cidade);
            db.AddParam("@UF_ENDERECO", SqlDbType.VarChar, polo.Estado);
            db.AddParam("@EMAIL", SqlDbType.VarChar, polo.Email);
            db.AddParam("@DDD_TELEFONE", SqlDbType.Int, polo.Ddd);
            db.AddParam("@TELEFONE", SqlDbType.VarChar, polo.Fone1);
            
            if (polo.Ddd2 > 0)
                db.AddParam("@DDD_CELULAR", SqlDbType.Int, polo.Ddd2);
            else
                db.AddParam("@DDD_CELULAR", SqlDbType.Int, DBNull.Value);
            
            if (polo.Fone2 != null)
                db.AddParam("@CELULAR", SqlDbType.VarChar, polo.Fone2);
            else
                db.AddParam("@CELULAR", SqlDbType.Int, DBNull.Value);
            
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);

            //return db.ExecuteNonQuery();

            bool atualizou = db.ExecuteNonQuery();

            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'UPDATE',
                        'TB_POLO',
                        (CAST(@ID_POLO AS VARCHAR)
                        + ' | ' + CAST(@ID_ESTADO AS VARCHAR)
                        + ' | ' + UPPER(@DESCRICAO)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + CAST(@ID_ADMINISTRADOR AS VARCHAR)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
                db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
                db.AddParam("@EMAIL", SqlDbType.VarChar, polo.Email);
                db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return atualizou;
        }
        #endregion

        #region Excluir
        public bool excluir(Polo polo, string usuario)
        {
            string SQL = @"DELETE 
                        FROM   TB_POLO
                        WHERE  ID_POLO = @ID_POLO";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);

            //return db.ExecuteNonQuery();

            bool atualizou = db.ExecuteNonQuery();

            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'DELETE',
                        'TB_POLO',
                         (CAST(@ID_POLO AS VARCHAR)
                        + ' | ' + CAST(@ID_ESTADO AS VARCHAR)
                        + ' | ' + UPPER(@DESCRICAO)
                        + ' | ' + UPPER(@EMAIL)
                        + ' | ' + CAST(@ID_ADMINISTRADOR AS VARCHAR)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
                db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
                db.AddParam("@EMAIL", SqlDbType.VarChar, polo.Email);
                db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return atualizou;
        }

        #endregion

        #region Listar Polos
        public DataTable listaPolos(Polo polo)
        {
            string SQL = @"SELECT  tp.ID_POLO,
                                   tp.ID_ESTADO,
                                   tp.CIDADE,
                                    CASE
                                   WHEN tp.SITUACAO = 'A' THEN 'Ativo'
                                   WHEN tp.SITUACAO = 'F' THEN 'Inativo'
                                    END AS SITUACAO,
                                   tp.DESCRICAO,
                                   te.ESTADO AS ESTADO_POLO,
                                   TP.ID_ADMINISTRADOR
                            FROM   TB_POLO tp
                                   INNER JOIN TB_ESTADO te
                                        ON  te.ID_ESTADO = tp.ID_ESTADO
                            WHERE  tp.DESCRICAO LIKE '%' + @DESCRICAO + '%'";

            if (polo.IdEstado > 0)
                SQL += " AND tp.ID_ESTADO = @ID_ESTADO";

            DataAccess db = new DataAccess(SQL);
            if (polo.IdEstado > 0)
                db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
            db.AddParam("@DESCRICAO", SqlDbType.VarChar, polo.DescricaoPolo);
            return db.GetDataTable();
        }
        #endregion

        #region Listar Polos
        public DataTable listaPolosEstado(Polo polo)
        {
            string SQL = @"SELECT  tp.ID_POLO,
                                   tp.ID_ESTADO,
                                   tp.CIDADE,
                                    CASE
                                   WHEN tp.SITUACAO = 'A' THEN 'Ativo'
                                   WHEN tp.SITUACAO = 'F' THEN 'Inativo'
                                    END AS SITUACAO,
                                   tp.DESCRICAO,
                                   te.ESTADO AS ESTADO_POLO,
                                   TP.ID_ADMINISTRADOR
                            FROM   TB_POLO tp
                                   INNER JOIN TB_ESTADO te
                                        ON  te.ID_ESTADO = tp.ID_ESTADO
                            WHERE  tp.ID_ESTADO = @ID_ESTADO
                            ORDER BY tp.DESCRICAO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, polo.IdEstado);
            return db.GetDataTable();
        }
        #endregion

        #region Verifica Polo no Estado
        public DataTable poloExisteNesseEstado(int pIdEstado, string pDescPolo)
        {
            string SQL = @"SELECT  tp.ID_POLO
                            FROM   TB_POLO tp
                            WHERE tp.ID_ESTADO = @ID_ESTADO ";
                    if(pDescPolo != string.Empty)
                        SQL += @" AND UPPER(tp.DESCRICAO) = UPPER(@DESCRICAO)";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, pIdEstado);
            if(pDescPolo != string.Empty)
                db.AddParam("@DESCRICAO", SqlDbType.VarChar, pDescPolo);
            return db.GetDataTable();
        }
        #endregion

        #region Retorna Polo
        public Polo retornaPolo(Polo polo)
        {
            string SQL = @"SELECT  tp.ID_POLO,
                                   tp.ID_ESTADO,
                                   tp.SITUACAO,
                                   tp.DESCRICAO,
                                   tp.CEP,
                                   tp.ENDERECO,
                                   tp.NUMERO,
                                   tp.COMPLEMENTO,
                                   tp.BAIRRO,
                                   tp.CIDADE,
                                   tp.UF_ENDERECO,
                                   tp.EMAIL,
                                   tp.DDD_TELEFONE,
                                   tp.TELEFONE,
                                   tp.DDD_CELULAR,
                                   tp.CELULAR,
                                   tp.ID_ADMINISTRADOR,
                                   tp.DATA_CADASTRO
                            FROM   TB_POLO tp
                            WHERE  tp.ID_POLO = @ID_POLO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
            try
            {
                db.AbrirConexao();
                SqlDataReader dr = db.ExecuteReader();
                if (dr.Read())
                {
                    polo.IdPolo = Convert.ToInt32(dr["ID_POLO"].ToString());
                    polo.IdEstado = Convert.ToInt32(dr["ID_ESTADO"].ToString());
                    polo.Situacao = dr["SITUACAO"].ToString();
                    polo.DescricaoPolo = dr["DESCRICAO"].ToString();
                    polo.Email = dr["EMAIL"].ToString();
                    polo.Cep = Convert.ToInt32(dr["CEP"].ToString());
                    polo.Endereco = dr["ENDERECO"].ToString();
                    polo.NumeroEndereco = Convert.ToInt32(dr["NUMERO"].ToString());
                    polo.Complemento = dr["COMPLEMENTO"].ToString();
                    polo.Bairro = dr["BAIRRO"].ToString();
                    polo.Cidade = dr["CIDADE"].ToString();
                    polo.Estado = dr["UF_ENDERECO"].ToString();
                    polo.Ddd = Convert.ToInt32(dr["DDD_TELEFONE"].ToString());
                    polo.Fone1 =dr["TELEFONE"].ToString();
                    if (dr["DDD_CELULAR"].ToString() != "")
                        polo.Ddd2 = Convert.ToInt32(dr["DDD_CELULAR"].ToString());
                    else
                        polo.Ddd2 = 0;
                    if (dr["CELULAR"].ToString() != "")
                        polo.Fone2 = dr["CELULAR"].ToString();
                    else
                        polo.Fone2 = "";                            
                    polo.IdAdmPolo = Convert.ToInt32(dr["ID_ADMINISTRADOR"].ToString());


                    polo.DataCadastro = Convert.ToDateTime(dr["DATA_CADASTRO"].ToString());
                }
                return polo;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.FecharConexao();
            }
        }
        #endregion

        #region Lista Administradores de Polo
        public DataTable listaAdmPolos(Polo polo)
        {
            string SQL = @"SELECT  ta.ID_ADMINISTRADOR,
                                   ta.NOME
                            FROM   TB_ADMINISTRADOR ta
                          WHERE  ta.NOME LIKE '%' + @NOME + '%'";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@NOME", SqlDbType.VarChar, polo.NomeAdm);
            return db.GetDataTable();
        }
        #endregion

        #region Lista Administradores de Polo
        public DataTable listaAdmPolosId(Polo polo)
        {
            string SQL = @"SELECT  ta.ID_ADMINISTRADOR,
                                   ta.NOME
                            FROM   TB_ADMINISTRADOR ta
                            where ta.ID_ADMINISTRADOR = @ID_ADMINISTRADOR";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ADMINISTRADOR", SqlDbType.Int, polo.IdAdmPolo);
            return db.GetDataTable();
        }
        #endregion

        #region Lista Cidades por Polo
        public DataTable listaCidadesPorPolo(Polo polo)
        {
            string SQL = @"SELECT  tcp1.ID_CIDADE_POLO,
                                   tcp1.ID_POLO,
                                   tcp1.ID_CIDADE,
                                   tcp1.SITUACAO,
                                   tcp1.DATA_CADASTRO,
                                   tc.NOME_CIDADE
                            FROM   TB_CIDADE_POLO tcp1
                                   INNER JOIN TB_CIDADE tc
                                        ON  tc.ID_CIDADE = tcp1.ID_CIDADE
                            WHERE  tcp1.ID_POLO = @ID_POLO
                            ORDER BY
                                   tc.NOME_CIDADE";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
            return db.GetDataTable();

        }
        #endregion

        #region Inserir cidade por Polo
        public bool insereCidadePorPolo(Polo polo, string usuario)
        {
            string SQL = @"INSERT INTO TB_CIDADE_POLO
                              (
                                ID_POLO,
                                ID_CIDADE,
                                SITUACAO,
                                DATA_CADASTRO
                              )
                            VALUES
                              (
                                @ID_POLO,
                                @ID_CIDADE,
                                @SITUACAO,
                                GETDATE()
                              )";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
            db.AddParam("@ID_CIDADE", SqlDbType.Int, polo.IdCidade);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);

            //return db.ExecuteNonQuery();

            bool inseriu = db.ExecuteNonQuery();

            if (inseriu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'INSERT',
                        'TB_CIDADE_POLO',
                        ((SELECT CAST(MAX(ID_CIDADE_POLO) AS VARCHAR) FROM TB_CIDADE_POLO)
                        + ' | ' + CAST(@ID_CIDADE AS VARCHAR)
                        + ' | ' + CAST(@ID_POLO AS VARCHAR)
                        + ' | ' + UPPER(@SITUACAO)),                        
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
                db.AddParam("@ID_CIDADE", SqlDbType.Int, polo.IdCidade);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return inseriu;
        }
        #endregion

        #region Alterar Cidade Por Polo
        public bool alteraCidadePorPolo(Polo polo, int idCidadePolo, string usuario)
        {
            string SQL = @"UPDATE  TB_CIDADE_POLO
                            SET    ID_POLO = @ID_POLO,
                                   ID_CIDADE = @ID_CIDADE,
                                   SITUACAO = @SITUACAO
                            WHERE  ID_CIDADE_POLO = @ID_CIDADE_POLO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
            db.AddParam("@ID_CIDADE", SqlDbType.Int, polo.IdCidade);
            db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
            db.AddParam("@ID_CIDADE_POLO", SqlDbType.Int, idCidadePolo);

            //return db.ExecuteNonQuery();

            bool atualizou = db.ExecuteNonQuery();

            if (atualizou)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'UPDATE',
                        'TB_CIDADE_POLO',
                        (CAST(@ID_CIDADE_POLO AS VARCHAR)
                         + ' | ' + CAST(@ID_CIDADE AS VARCHAR)
                        + ' | ' + CAST(@ID_POLO AS VARCHAR)
                        + ' | ' + UPPER(@SITUACAO)),                            
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_CIDADE_POLO", SqlDbType.Int, polo.IdCidadePolo);
                db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
                db.AddParam("@ID_CIDADE", SqlDbType.Int, polo.IdCidade);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return atualizou;
        }
        #endregion

        #region Excluir Cidade Por Polo
        public bool excluiCidadePorPolo(Polo polo, string usuario)
        {
            string SQL = @"DELETE 
                            FROM   TB_CIDADE_POLO
                            WHERE  ID_CIDADE_POLO = @ID_CIDADE_POLO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CIDADE_POLO", SqlDbType.Int, polo.IdCidadePolo);

            //return db.ExecuteNonQuery();

            bool excluiu = db.ExecuteNonQuery();

            if (excluiu)
            {
                SQL = @"INSERT INTO TB_AUDITORIA
                      (
                        ACAO,
                        TABELA,
                        DESCRICAO,
                        USUARIO,
                        DATA                                    
                      )
                    VALUES
                      (                                     
                        'DELETE',
                        'TB_CIDADE_POLO',
                        (CAST(@ID_CIDADE_POLO AS VARCHAR)
                         + ' | ' + CAST(@ID_CIDADE AS VARCHAR)
                        + ' | ' + CAST(@ID_POLO AS VARCHAR)
                        + ' | ' + UPPER(@SITUACAO)),                            
                        UPPER(@USUARIO),
                        GETDATE()
                      )";

                db = new DataAccess(SQL);

                db.AddParam("@ID_CIDADE_POLO", SqlDbType.Int, polo.IdCidadePolo);
                db.AddParam("@ID_POLO", SqlDbType.Int, polo.IdPolo);
                db.AddParam("@ID_CIDADE", SqlDbType.Int, polo.IdCidade);
                db.AddParam("@SITUACAO", SqlDbType.VarChar, polo.Situacao);
                db.AddParam("@USUARIO", SqlDbType.VarChar, usuario);
            }

            db.ExecuteNonQuery();
            return excluiu;
        }
        #endregion

        #region Retorna Cidade por Polo
        public Polo retornaCidadePolo(Polo polo)
        {
            string SQL = @"SELECT  tcp1.ID_CIDADE_POLO,
                                   tcp1.ID_POLO,
                                   tcp1.ID_CIDADE,
                                   tcp1.SITUACAO,                                  
                                   tc.NOME_CIDADE,
                                   tc.ID_ESTADO                                  
                            FROM   TB_CIDADE_POLO tcp1
                                   INNER JOIN TB_CIDADE tc
                                        ON  tc.ID_CIDADE = tcp1.ID_CIDADE
                            WHERE  tcp1.ID_CIDADE_POLO = @ID_CIDADE_POLO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CIDADE_POLO", SqlDbType.Int, polo.IdCidadePolo);
            try
            {
                db.AbrirConexao();
                SqlDataReader dr = db.ExecuteReader();
                if (dr.Read())
                {
                    polo.IdCidadePolo = Convert.ToInt32(dr["ID_CIDADE_POLO"].ToString());
                    polo.IdPolo = Convert.ToInt32(dr["ID_POLO"].ToString());
                    polo.IdEstado = Convert.ToInt32(dr["ID_ESTADO"].ToString());
                    polo.IdCidade = Convert.ToInt32(dr["ID_CIDADE"].ToString());
                    polo.Situacao = dr["SITUACAO"].ToString();
                    polo.NomeCidadePolo = dr["NOME_CIDADE"].ToString();                    
                }
                return polo;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                db.FecharConexao();
            }
        }
        #endregion

        #region Listar Cidades x Estado e que não estão alocadas a nenhum Polo
        public DataTable listarCidadesXEstado(int pEstado, string pCidade)
        {
            string SQL = @"SELECT  tc.ID_CIDADE,
                                   tc.NOME_CIDADE,
                                   te.ESTADO,
                                   tc.SITUACAO
                            FROM   TB_ESTADO te
                                   JOIN TB_CIDADE tc
                                        ON  tc.ID_ESTADO = te.ID_ESTADO
                            WHERE  te.ID_ESTADO = @ID_ESTADO
                                   AND tc.NOME_CIDADE LIKE @CIDADE + '%'
                                   AND tc.ID_CIDADE NOT IN (SELECT tcp1.ID_CIDADE
                                                            FROM   TB_CIDADE_POLO tcp1
                                                            WHERE  tcp1.ID_CIDADE = tc.ID_CIDADE)";
            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, pEstado);
            db.AddParam("@CIDADE", SqlDbType.VarChar, pCidade);
            return db.GetDataTable();
        }
        #endregion

        #region Listar Cidades Por Id
        public DataTable listarCidadePorId(int idCidade)
        {
            string SQL = @"SELECT tc.ID_CIDADE,
                                  tc.NOME_CIDADE
                           FROM   TB_CIDADE tc
                           WHERE  tc.ID_CIDADE = @ID_CIDADE";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_CIDADE", SqlDbType.Int, idCidade);            
            return db.GetDataTable();
        }
        #endregion

        #region Relatorio Gestor por Polo
        public DataTable relGestorPolo(int idEstado)
        {
            string SQL = @"SELECT  te.ESTADO,
                                   tp.DESCRICAO AS DESCRICAO_POLO,
                                   tp.CIDADE,
                                   '(' + RTRIM(tp.DDD_TELEFONE) + ')' + ' ' + tp.TELEFONE AS TELEFONE,
                                   '(' + RTRIM(tp.DDD_CELULAR) + ')' + ' ' + tp.CELULAR AS CELULAR,
                                   ta.ID_ADMINISTRADOR,
                                   ta.NOME
                            FROM   TB_ADMINISTRADOR ta
                                   INNER JOIN TB_POLO tp
                                        ON  tp.ID_ADMINISTRADOR = ta.ID_ADMINISTRADOR
                                   INNER JOIN TB_ESTADO te
                                        ON  te.ID_ESTADO = tp.ID_ESTADO
                            WHERE  (tp.ID_ESTADO = @ID_ESTADO OR @ID_ESTADO = 0)
                            ORDER BY
                                   te.ESTADO,
                                   tp.DESCRICAO";

            DataAccess db = new DataAccess(SQL);
            db.AddParam("@ID_ESTADO", SqlDbType.Int, idEstado);
            return db.GetDataTable();
        }
        #endregion        
    }
}
